package cn.tqfeiyang.smartadmin.commons.conversion;

import jakarta.annotation.Resource;
import org.modelmapper.ModelMapper;
import org.springframework.stereotype.Service;

import java.util.Collection;
import java.util.List;

/**
 * 对象类型转换服务
 *
 * @author tqfeiyang
 * @since 2024/8/20 14:20
 */
@Service
public class ConversionService {

    @Resource
    private ModelMapper modelMapper;

    /**
     * 将原始对象转换成对应的目标类型
     *
     * @param source 原始对象
     * @param destinationType 目标类型
     * @return 目标类型对象
     */
    public <D> D map(Object source, Class<D> destinationType) {
        return modelMapper.map(source, destinationType);
    }

    /**
     * 将原始对象集合转换成对应的目标类型
     *
     * @param col 原始对象对象
     * @param destinationType 目标类型
     * @return 目标类型对象集合
     */
    public <D> List<D> map(Collection<?> col, Class<D> destinationType) {
        return col.stream()
                .map(item -> map(item, destinationType))
                .toList();
    }
}
